const App = getApp()
//Page Object
Page({
  data: {
    // 导航栏信息
    navBar: {
      // 导航高度
      navHeight: 0,
      // 状态栏高度
      statusBarHeight: 0,
      // 标题栏高度
      titleBarHeight: 0,
      // 胶囊距状态栏的高度
      menuBtnTop: 0
    },
    // 左侧菜单数据
    leftMenuList: [],
    // 右侧内容数据
    rightContentList: [],
    // 左侧被选中的索引
    currentIndex: 0,
    // 左侧内容的滚动条距离顶部的位置
    leftScrollTop: 0,
    // 右侧内容的滚动条距离顶部的位置
    rightScrollTop: 0
  },
  // 手机高度
  windowHeight: 0,
  Cates: [],

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options){
    // 获取本地存储中的数据
    const Cates = wx.getStorageSync("cates")
    // 判断本地存储中有没有旧的数据
    if(!Cates) {
      // 本地没有数据，发送异步请求获取数据
      this.getCategoriesList()
    }else {
      // 有旧数据,再判断时间有没有过期
      if(Date.now() - Cates.time > 1000*10) {
        // 时间过期，重新请求数据
        this.getCategoriesList()
      }else {
        // 时间没过期，使用旧数据
        this.Cates = Cates.data
        let leftMenuList = this.Cates.map(v => v.cat_name)
        let rightContentList = this.Cates[0].children
        this.setData({ leftMenuList, rightContentList })        
      }
    }

    const windowHeight = wx.getSystemInfoSync().windowHeight
    this.windowHeight = windowHeight
    this.setData({
      navBar: {
        navHeight: App.globalData.navBar.navHeight,
        statusBarHeight: App.globalData.navBar.statusBarHeight,
        titleBarHeight: App.globalData.navBar.titleBarHeight,
        menuBtnTop: App.globalData.navBar.menuBtnTop
      }
    })
  },

  // 左侧菜单的点击事件
  handleItem(e) {
    const { index } = e.currentTarget.dataset
    let rightContentList = this.Cates[index].children
    let offsetTop = e.currentTarget.offsetTop - (this.windowHeight / 2 - 80)
    this.setData({
      currentIndex: index,
      leftScrollTop: offsetTop,
      rightScrollTop: 0,
      rightContentList
    })
  },

  // 获取分类数据
  async getCategoriesList() {
    // 显示加载中 效果
    wx.showLoading({
      title: '加载中',
      mask: true
    })
    const { result: res } = await wx.cloud.callFunction({
      name:'categories'
    })
    this.Cates = res.data

    // 把数据存入本地存储中
    wx.setStorageSync("cates", {time: Date.now(), data: this.Cates})

    // 构造左侧的菜单数据
    let leftMenuList = this.Cates.map(v => v.cat_name)
    // 构造右侧的商品数据
    let rightContentList = this.Cates[0].children
    this.setData({ leftMenuList, rightContentList })

    // 关闭加载中效果
    wx.hideLoading()
  }
});